#ifndef MIND_VISION_CAMERA_H
#define MIND_VISION_CAMERA_H

#include "../Base/RealtimeCamera.hpp"
#include "CameraApi.h"
#include <thread>

class MindVisionConfig;

class MindVisionCamera : public RealtimeCamera {
private:
  std::jthread WorkThread;
  MindVisionConfig *config;
  int handle;

  long MaxImageSize;
  std::string UUID;

public:
  MindVisionCamera(tSdkCameraDevInfo *cameraInfo);
  virtual ~MindVisionCamera();

  virtual std::string GetUUID() override final;
  virtual bool ShotStatus() override final;
  virtual BaseConfig *Config() override final;
  virtual long MaxSingleImgSize() override final;
  virtual float FPS() override final;
  virtual void StartShot() override final;
  virtual void StopShot() override final;
  virtual BaseCamera::ImgInf ShotImageType() override final;
};

#endif
